package com.itheima.web;

import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import com.alibaba.dubbo.config.annotation.Reference;
import com.itheima.pojo.Result;
import com.itheima.service.ReportService;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.*;

/**
 * @version V1.0
 * @author: yongjichu
 * @date: 2020/2/10 14:46
 * @description:
 */
@RestController
@RequestMapping("/report")
public class ReportController {
   @Reference
    ReportService reportService;
    @RequestMapping("/getMemberReport")
    public Result getMemberReport(){
        /**
         * 现在我们做的这个功能是一个报表功能，需要展示的效果是会员的增长趋势图
         * 需要获取的数据有：
         * 1.月份的数组比如说【2019-10，2019-11，2019-12，2020-01，2020-02】
         * 2.对应的会员人数假如说2019-10有10个人，2019-11有20个人，那么当我们查2019-11的数据时经应该加上之前的10月份的人数，这样的报表才是一个增长的趋势
         */
        //1.创建一个集合，里面放的是查询的月份的所有的数据
        List<String> months=new ArrayList<>();
        //2.创建当前日期
        Date date=new Date();
        //利用工具类获取往后推12个月的数据
        //dateTime为2019-12-10，即为当前日期后推12个月
        DateTime dateTime = DateUtil.offsetMonth(date, -12);
        for (int i = 0; i <= 12; i++) {
            //得到的数据为 2019-02-10，2019-03-10....2020-01-10,2020-02-10
            DateTime monthDate = DateUtil.offsetMonth(dateTime, i);
            //将得到的数据改为2019-02，这种格式之后再add进去
            months.add(monthDate.toString("yyyy-MM"));
        }
        //根据months获取需要求得的会员数量

        List<Integer> memberCount= reportService.findMemberReport(months);
        //将查到的months和memberCount放到map里
        Map map=new HashMap();
        map.put("months",months);
        map.put("memberCount",memberCount);
        return Result.success(true,"",map);
    }
    @RequestMapping("/getSetmealReport")
    public Result getSetmealReport(){
       List<Map> mapList= reportService.getSetmealReport();
       return Result.success(true,"",mapList);
    }
    /**
     * 根据性别做报表
     * @return
     */
    @RequestMapping("/getMemberBySexReport")
    public Result getMemberBySexReport(){
        List<Map> mapList=reportService.getMemberBySexReport();
        return Result.success(true,"",mapList);
    }

    /**
     * 根据年龄段做报表
     * @return
     */
    @RequestMapping("/getMemberByAgeReport")
    public Result getMemberByAgeReport(){
        List<Map> mapList=reportService.getMemberByAgeReport();
        return Result.success(true,"",mapList);
    }
}
